const db = require('../../database/index')
const bcrypt = require('bcryptjs')
const jwt = require('jsonwebtoken')
const { jwtSecretKey } = require('../../config')
// 用户注册
const reUser = (req, res) => {
  const userInfo = req.body
  const sqlStr = 'select * from ev_users where username=?'
  db.query(sqlStr, [userInfo.username], (err, results) => {
    if (err) {
      return res.cc(err)
    } else if (results.length > 0) {
      return res.cc('用户名被占用,请更换其他用户名')
    } else {
      // 对密码进行加密
      userInfo.password = bcrypt.hashSync(userInfo.password, 10)
      const sql = 'insert into ev_users set?'
      db.query(sql, userInfo, (err, results) => {
        if (err) {
          return res.cc(err)
        } else if (results.affectedRows > 0) {
          return res.cc('注册成功', 1)
        } else {
          return res.cc('注册失败')
        }
      })
    }
  })
}

// 用户登录
const login = (req, res) => {
  // 获取用户信息
  const userInfo = req.body
  const sql = 'select * from ev_users where username=?'
  // 查询数据库
  db.query(sql, [userInfo.username], (err, results) => {
    if (err) return res.cc(err)
    if (results.length > 0) {
      // 与数据库中的密码比较
      if (bcrypt.compareSync(userInfo.password, results[0].password)) {
        // 删除用户密码和头像
        const user = {...results[0], password: '', user_pic: ''}
        // 生成token
        const token = 'Bearer ' + jwt.sign(user, jwtSecretKey, { expiresIn:'168h'})
        return res.send({
          status: 1,
          msg: '登陆成功',
          data: {
            token
          }
        })
      } else {
        return res.cc('登录失败, 密码错误')
      }
    } else {
      return res.cc('登录失败, 用户名不存在')
    }
  })
}

module.exports = {
  reUser,
  login
}
